import Request from 'luch-request'
import { BASE_URL, WHITE_LIST } from './constant'
import { useUserStore } from '@/store/user'

// 1. 基地址
// const baseURL = 'https://consult-api.itheima.net'

// 2. 创建Request实例对象
const request = new Request({
  // 接口基地址
  baseURL: BASE_URL,
  custom: {
    loading: true
  }
})

// 4. 配置请求拦截器
request.interceptors.request.use(
    (config) => {
      if (config.custom?.loading === true) {
        uni.showLoading({ title: '正在加载...', mask: true })
      }
      // 3.1 判断是否有token, 而且请求的接口地址不在白名单中
      const store = useUserStore()
      if (store.token && !WHITE_LIST.includes(config.url as string)) {
        config.header!.Authorization = `Bearer ${store.token}`
      }
      return config
    },
    (error) => {
        return Promise.reject(error)
    }
)

// 5. 配置响应拦截器
request.interceptors.response.use(
    (res) => {
        // 关闭弹层
        uni.hideLoading()
        if (res.data.code !== 10000) {
            uni.showToast({
                title: res.data.message,
                icon: 'none'
            })
            return Promise.reject(res.data)
        }
        return res.data?.data
    },
    (error) => {
      // 关闭弹层
      uni.hideLoading()
      uni.showToast({
        title: error.data.message,
        icon: 'none',
      })
      // 判断token过期情况
      if (error.statusCode === 401) {
        uni.reLaunch({
          url: '/pages/login/index',
        })
      }
      return Promise.reject(error)
    }
)


// 3. 导出
export { request }